<?php 
/**
 * 分类管理模型
 */
class CategoryModel extends Model{
    public $table = 'category';
    
    public $auto = array();
    
    public $validate = array(
		array('cname','nonull','分类名称不能为空',1,3),
	);
    /**
	 * 添加顶级分类
	 */
    public function addCate(){
        return $this->add();
    }
	public function editCate(){
	    $this->update();
		return true;
	}
	/**
	 * 添加子类
	 */
	public function addSonCate(){
		return $this->add();
	}
	/**
	 * 通过分类ID获得商品ID
	 */
	public function cidGetGid($cid){
		$cids=$this->getSon($cid);
//		开启缓存(给每个分类起不同的名字)
		$gids=S("{$cid}_gid");
//		如果缓存不存在
		if(!$gids){
//			通过cid获得对应的商品id
			$gids=K('Goods')->where("cid IN (".implode(',', $cids).")" )->getField('gid',true);	
			S("{$cid}_gid",$gids,60*5);	
		}
		return $gids;
	}
	
	/**
	 * 获得所有的子集,包括自己
	 */
	private function getSon($cid){
		$data=$this->all();
		$cids=$this->getSonCid($data, $cid);
		$cids[]=$cid;
		return $cids;
	} 
	
	/**
	 * 获得子集分类CID,不包括自己
	 */
	private function getSonCid($data,$cid){
		$tmp=array();
//		循环分类数据查找是否有子类
		foreach ($data as $v) {
			if($v['pid']==$cid){
				$tmp[]=$v['cid'];
				$tmp=array_merge($tmp,$this->getSonCid($data,$v['cid']));
			}
		}
		return $tmp;
	}
	
	
	
	
 }
 
 
 
 
 
 
 
 
 
 
 






 ?>